/*
 * Yazan : Can Alpay Çiftçi
 * Ddili.org trileri kütüphane projesi
 * bilgi için : ddili.org , ddili.org/wiki , ddili.org/forum
 * Sürüm : 0.001 
 */
module tr.string;// Modülü tanımlıyoruz.

import std.conv;
import std.string;//Gerekli modülleri projeye ekliyoruz.
/**
 * 
 * toupperT toupper gibi string değer alır ve string değer döndürür.
 * toupper'ın yetersiz kaldığı ı ve i harf büyütülmesi replace ile 
 * yapılmıştır. replace için: ddili.org/wiki den phobos kütüphanesinden
 * string modülünü seçerek kullanımını bakabilirsiniz.
 * return ilede işlenmiş olan son değerler döndürülmüştür.
 *  
 * */
string toupperT(string giriş) 
{
    string I="I";
    string İ="İ";
    string i="i";
    string ı="ı";
    giriş=replace(giriş , ı , I);
    giriş=replace(giriş , i , İ);
    string sonGiriş = toupper(giriş);
    return sonGiriş;
}
unittest 
{
    assert(toupperT("iıİI") == "İIİI");
    assert(toupperT("ğşç") == "ĞŞÇ");
    assert(toupperT("öü") == "ÖÜ");
}

/**
 * 
 * tolowerT tolower gibi string değer alır ve string değer döndürür.
 * tolower'ın yetersiz kaldığı ı ve i harf küçültülmesi replace ile 
 * yapılmıştır. replace için: ddili.org/wiki den phobos kütüphanesinden
 * string modülünü seçerek kullanımını bakabilirsiniz.
 * return ilede işlenmiş olan son değerler döndürülmüştür.
 *  
 * */
string tolowerT(string giriş) 
{
    string I="I";
    string İ="İ";
    string i="i";
    string ı="ı";
    giriş=replace(giriş , I , ı);
    giriş=replace(giriş , İ , i);
    string sonGiriş = tolower(giriş);

    return sonGiriş;
}
unittest
{
    assert(tolowerT("ALİ") == "ali");
    assert(tolowerT("iıİI") == "iıiı");
    assert(tolowerT("ĞŞÇ") == "ğşç");
    assert(tolowerT("ÖÜ") == "öü");
}
/**
 * 
 * capitalizeT şuan yapım aşamasındadır. 
 * 
 * */


string capitalizeT(string s){
	size_t say;
	char[] se=s.dup;
	char tekHarf=se[1];
	while(se[0]=='i'|| say<3){
	    char[] İ="İ"c.dup;
	    se[0] = İ[0];
	    se[1] = İ[1];
        ++say;
	}
	char[] seDilim=se[2..$];
	/*seDilim=replace(seDilim.idup, I, ı).dup;*/
	seDilim[]=tolowerT(seDilim.idup);
	if (say>1){
	char[] çıkış = se[0..2] + tekHarf + se[2..$];
	
    }else{
	char[] çıkış = se[0]+tekHarf+se[2..$];		
	}
	//string sonÇıkış = çıkış[].idup;
	return çıkış;
}

